package com.antball.dd.abserver.alarm;

import java.util.Iterator;
import java.util.Vector;

public class BellEventPublisher {

    private Vector<BellEventListener> listeners; //监听器容器

    public BellEventPublisher() {
        listeners = new Vector();
    }

    //给事件源绑定监听器
    public void addListener(BellEventListener ren) {
        listeners.add(ren);
    }

    //事件触发器：敲钟，当铃声sound的值发生变化时，触发事件。
    public void ring(RingEvent.BellTypeEnum bellTypeEnum) {
        RingEvent event = new RingEvent(this, bellTypeEnum);

        System.out.println(bellTypeEnum.toString() + "响！");

        publishEvent(event);    //通知注册在该事件源上的所有监听器
    }

    //当事件发生时,通知绑定在该事件源上的所有监听器做出反应（调用事件处理方法）
    protected void publishEvent(RingEvent e) {
        BellEventListener ren = null;

        Iterator<BellEventListener> iterator = listeners.iterator();
        while (iterator.hasNext()) {
            ren = iterator.next();
            ren.onBellRingsEvent(e);
        }
    }
}
